﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Rendiciones.Logica.Enumeradores;
using Rendiciones.Logica.Modelos;
using Rendiciones.Logica.Servicios;
using Rendiciones.Web.infraestructura;

namespace Rendiciones.Web.Gerente
{
    public partial class ctrlEditarGasto : UserControlBase
    {
        private static ServGastos _servGastos;
        protected void Page_Load(object sender, EventArgs e)
        {
            _servGastos = new ServGastos();
            DrTipoGasto.DataTextField = "DescripcionGasto";
            DrTipoGasto.DataValueField = "IdGasto";

            DrGastoAsociado.DataTextField = "DescripcionGasto";
            DrGastoAsociado.DataValueField = "IdGasto";

            ddTipoDocumento.DataTextField = "Descripcion";
            ddTipoDocumento.DataValueField = "IdDocumento";
            if (!IsPostBack)
            {
                CargarCombos();
            }
        }

        public void CargarCombos()
        {
            DrTipoGasto.DataSource = _servGastos.TodosLosTiposDeGasto();
            DrTipoGasto.DataBind();

            DrGastoAsociado.DataSource = _servGastos.TodosLosGastosAsociados();
            DrGastoAsociado.DataBind();


            ddTipoDocumento.DataSource = Modulos.Rendiciones.Documentos.Buscar();
            ddTipoDocumento.DataBind();

        }

        public void Mostrar()
        {

            txtFechaDocumento2.Text = "";
            TxtNroDocumento.Text = "";
            TxtRutProveedor.Text = "";
            TxtDescripcion.Text = "";
            TxtMontoNeto.Text = "";
            TxtIVA.Text = "";
            TxtRetencion.Text = "";
            TxtTotalPago.Text = "";
            DrTipoGasto.SelectedIndex = -1;
            DrGastoAsociado.SelectedIndex = -1;
            mpeAgregarGasto.Show();
        }

        public void Cerrar()
        {
            mpeAgregarGasto.Hide();
        }

        protected void BtnGuardarGasto_Click(object sender, EventArgs e)
        {
            //CargaDatosAGrilla(0, true);
            Cerrar();
        }

        public string NroGasto { get { return lbl_NRO_RENDICION.Text; } set { lbl_NRO_RENDICION.Text = value; } }

        protected void BtnCancelarGasto_Click(object sender, EventArgs e)
        {
            Cerrar();
        }

        public void CargaDatosAPopup(Gasto gasto)
        {
            hfIdGasto.Value = gasto.IdGasto.ToString();
            DrTipoGasto.SelectedValue = gasto.TipoGasto.IdGasto.ToString();
            DrGastoAsociado.SelectedValue = gasto.GastoAsociado.ToString();
            ddTipoDocumento.SelectedValue = gasto.TipoDocumento.IdDocumento.ToString();
            TxtRutProveedor.Text = gasto.RutBeneficiario;
            lblNombreBeneficiario.Text = gasto.NombreBeneficiario;
            txtFechaDocumento2.Text = gasto.FechaDocumento.HasValue ? gasto.FechaDocumento.Value.ToString("dd-MM-yyyy") : "";
            TxtNroDocumento.Text = gasto.NroDocumento.ToString();
            TxtDescripcion.Text = gasto.Descripcion;
            TxtMontoNeto.Text = gasto.MontoNeto.ToString();
            TxtIVA.Text = gasto.Iva.ToString();
            TxtRetencion.Text = gasto.Retencion.ToString();
            TxtTotalPago.Text = gasto.TotalPagado.ToString();
            if (!string.IsNullOrEmpty(gasto.ObservacionesSupervisor))
            {
                divObservacionesSupervisor.Visible = true;
                txtObservacionesSupervisor.Text = gasto.ObservacionesSupervisor;
            }
            txtObservacionesGerente.Text = gasto.ObservacionesGerente;
            txtMontoExento.Text = gasto.MontoExento.ToString();
            rbtTipoDocumento.SelectedValue = ((int)gasto.TipoDocumentoGenerico).ToString();
            mpeAgregarGasto.Show();
        }

        public Gasto GastoIngresado
        {
            get
            {
                return new Gasto()
                {
                    IdGasto = int.Parse(hfIdGasto.Value),
                    TipoGasto = new TipoGasto() { IdGasto = int.Parse(DrTipoGasto.SelectedValue), DescripcionGasto = DrTipoGasto.SelectedItem.Text },
                    GastoAsociado = int.Parse(DrGastoAsociado.SelectedValue),
                    RutBeneficiario = TxtRutProveedor.Text,
                    NombreBeneficiario = lblNombreBeneficiario.Text,
                    FechaDocumento = string.IsNullOrEmpty(txtFechaDocumento2.Text) ? DateTime.Now : Convert.ToDateTime(txtFechaDocumento2.Text),
                    NroDocumento = string.IsNullOrEmpty(TxtNroDocumento.Text) ? 0 : int.Parse(TxtNroDocumento.Text),
                    Descripcion = string.IsNullOrEmpty(TxtDescripcion.Text) ? "Sin Descripción" : TxtDescripcion.Text,
                    MontoNeto = string.IsNullOrEmpty(TxtMontoNeto.Text) ? 0 : int.Parse(TxtMontoNeto.Text),
                    Iva = string.IsNullOrEmpty(TxtIVA.Text) ? 0 : int.Parse(TxtIVA.Text),
                    Retencion = string.IsNullOrEmpty(TxtRetencion.Text) ? 0 : int.Parse(TxtRetencion.Text),
                    TotalPagado = string.IsNullOrEmpty(TxtTotalPago.Text) ? 0 : int.Parse(TxtTotalPago.Text),
                    TipoDocumento = new TipoDocumento() { IdDocumento = int.Parse(ddTipoDocumento.SelectedItem.Value), Descripcion = ddTipoDocumento.SelectedItem.Text },
                    ObservacionesSupervisor = txtObservacionesSupervisor.Text,
                    ObservacionesGerente = txtObservacionesGerente.Text,
                    MontoExento = string.IsNullOrEmpty(txtMontoExento.Text) ? 0 : int.Parse(txtMontoExento.Text),
                    TipoDocumentoGenerico = TipoDocumentoGenerico
                };
            }
        }

        public ETipoDocumentoGenerico TipoDocumentoGenerico
        {
            get
            {
                var tipoDoc = new ETipoDocumentoGenerico();
                if (rbtTipoDocumento.SelectedValue == "1")
                    tipoDoc = ETipoDocumentoGenerico.Boleta;
                if (rbtTipoDocumento.SelectedValue == "2")
                    tipoDoc = ETipoDocumentoGenerico.Factura;
                if (rbtTipoDocumento.SelectedValue == "3")
                    tipoDoc = ETipoDocumentoGenerico.BoletaHonorarios;
                return tipoDoc;
            }
            set
            {
                if (value == ETipoDocumentoGenerico.Boleta)
                    rbtTipoDocumento.SelectedValue = "1";
                if (value == ETipoDocumentoGenerico.Factura)
                    rbtTipoDocumento.SelectedValue = "2";
                if (value == ETipoDocumentoGenerico.BoletaHonorarios)
                    rbtTipoDocumento.SelectedValue = "3";
            }
        }

        protected void DrTipoGasto_SelectedIndexChanged(object sender, EventArgs e)
        {
            int idGasto = int.Parse(DrTipoGasto.SelectedValue);
            DrGastoAsociado.DataSource = _servGastos.TiposDeGastoAsociados(idGasto);
            DrGastoAsociado.DataBind();
            mpeAgregarGasto.Show();
        }
    }
}